home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / ppl4c10.zip / OPCODES.C < prev    next >
Text File  |  1995-02-11  |  3KB  |  97 lines

  1. /* opcodes.c */
  2.  
  3. #include <stdio.h>
  4. #include "string.h"
  5. #include "opcodes.h"
  6.  
  7. static char *RefText[3] = {"NONE", "CODE", "DATA"};
  8.  
  9. static struct
  10. {WORD  Opcode;
  11.  BYTE  OperType;
  12.  char *Text;
  13. } Opcodes[NBR_OPCODES] =
  14.    {{OPC_HALT,    REF_HALT,    "HALT"},
  15.     {OPC_STATUS,  REF_STATUS,  "STATUS"},
  16.     {OPC_RETURN,  REF_RETURN,  "RETURN"},
  17.     {OPC_NOP,     REF_NOP,     "NOP"},
  18.     {OPC_DEBUG,   REF_DEBUG,   "DEBUG"},
  19.     {OPC_XXX_5,   0,           NULL},
  20.     {OPC_XXX_6,   0,           NULL},
  21.     {OPC_XXX_7,   0,           NULL},
  22.     {OPC_CALL,    REF_CALL,    "CALL"},
  23.     {OPC_LOOP,    REF_LOOP,    "LOOP"},
  24.     {OPC_IFTRUE,  REF_IFTRUE,  "IFTRUE"},
  25.     {OPC_IFFALSE, REF_IFFALSE, "IFFALSE"},
  26.     {OPC_GOTO,    REF_GOTO,    "GOTO"},
  27.     {OPC_BAUD,    REF_BAUD,    "BAUD"},
  28.     {OPC_DATABITS,REF_DATABITS,"DATABITS"},
  29.     {OPC_STOPBITS,REF_STOPBITS,"STOPBITS"},
  30.     {OPC_PARITY,  REF_PARITY,  "PARITY"},
  31.     {OPC_QUIET,   REF_QUIET,   "QUIET"},
  32.     {OPC_HANGUP,  REF_HANGUP,  "HANGUP"},
  33.     {OPC_REPLY,   REF_REPLY,   "REPLY"},
  34.     {OPC_DELAY,   REF_DELAY,   "DELAY"},
  35.     {OPC_SETCOUNT,REF_SETCOUNT,"SETCOUNT"},
  36.     {OPC_SETWAIT, REF_SETWAIT, "SETWAIT"},
  37.     {OPC_SAY,     REF_SAY,     "SAY"},
  38.     {OPC_WAITFOR, REF_WAITFOR, "WAITFOR"},
  39.     {OPC_SETPACE, REF_SETPACE, "SETPACE"},
  40.     {OPC_SETCASE, REF_SETCASE, "SETCASE"},
  41.     {OPC_ACCEPT,  REF_ACCEPT,  "ACCEPT"},
  42.     {OPC_PROTOCOL,REF_PROTOCOL,"PROTOCOL"},
  43.     {OPC_SEND,    REF_SEND,    "SEND"},
  44.     {OPC_RECEIVE, REF_RECEIVE, "RECEIVE"},
  45.     {OPC_TEST,    REF_TEST,    "TEST"},
  46.     {OPC_IF,      REF_IF,      "IF"},
  47.     {OPC_IFNOT,   REF_IFNOT,   "IFNOT"},
  48.     {OPC_XXX_34,   0,           NULL},
  49.     {OPC_XXX_35,   0,           NULL},
  50.     {OPC_XXX_36,   0,           NULL},
  51.     {OPC_XXX_37,   0,           NULL},
  52.     {OPC_XXX_38,   0,           NULL},
  53.     {OPC_XXX_39,   0,           NULL},
  54.     {OPC_XXX_40,   0,           NULL},
  55.     {OPC_USER1,   REF_USER,   "USER1"},
  56.     {OPC_USER2,   REF_USER,   "USER2"},
  57.     {OPC_USER3,   REF_USER,   "USER3"},
  58.     {OPC_USER4,   REF_USER,   "USER4"},
  59.     {OPC_USER5,   REF_USER,   "USER5"},
  60.     {OPC_USER6,   REF_USER,   "USER6"},
  61.     {OPC_USER7,   REF_USER,   "USER7"},
  62.     {OPC_USER8,   REF_USER,   "USER8"}
  63.    };
  64.  
  65. int MatchOpCode(WORD Opcode)
  66. {int i;
  67.  for(i=0;i<NBR_OPCODES;i++)
  68.    if(Opcodes[i].Opcode==Opcode) return(i);
  69.  return (-1);
  70. }
  71.  
  72. int MatchOpText(char *Text)
  73. {int i;
  74.  for(i=0;i<NBR_OPCODES;i++)
  75.    if(strcmp(Opcodes[i].Text,Text)==0) return(i);
  76.  return (-1);
  77. }
  78.  
  79. int GetOpCode(WORD Index)
  80. {if(Index<NBR_OPCODES) return (Opcodes[Index].Opcode);
  81.  else return (-1);
  82. }
  83.  
  84. char *GetOpText(WORD Index)
  85. {if(Index<NBR_OPCODES) return (Opcodes[Index].Text);
  86.  else return (NULL);
  87. }
  88.  
  89. int GetOperType(WORD Index)
  90. {if(Index<NBR_OPCODES) return (Opcodes[Index].OperType);
  91.  else return (-1);
  92. }
  93.  
  94. char *GetOperText(WORD Index)
  95. {if(Index<=DATA_REF) return (RefText[Index]);
  96.  else return NULL;
  97. }